package com.javasm.service.goods.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.javasm.common.page.PageResult;
import com.javasm.domin.criteria.goods.GiftsCriteria;
import com.javasm.domin.entity.goods.Gifts;
import com.javasm.domin.entity.goods.Goods;
import com.javasm.domin.vo.goods.GiftsVo;
import com.javasm.domin.vo.goods.GoodsVO;
import com.javasm.mapper.goods.GiftsMapper;
import com.javasm.service.base.impl.BaseServiceimpl;
import com.javasm.service.goods.IGiftsService;
import com.javasm.transfer.goods.GiftsTransfer;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author whl
 * @since 2022-01-16
 */
@Service
@Transactional
@RequiredArgsConstructor
public class GiftsServiceImpl extends BaseServiceimpl< Gifts> implements IGiftsService {

    private final GiftsTransfer giftsTransfer;
    private final GiftsMapper giftsMapper;

    @Override
    public GiftsVo getvoById(Long id) {
        Gifts gifts=giftsMapper.selectById(id);
        GiftsVo giftsVo=giftsTransfer.set(gifts);
        return giftsVo;
    }

    @Override
    public PageResult<GiftsVo> searchPage(GiftsCriteria giftsCriteria) {
        PageHelper.startPage(giftsCriteria.getCurrentPage(), giftsCriteria.getPageSize());
        LambdaQueryWrapper<Gifts> lambda = new QueryWrapper<Gifts>().lambda();

        if (!StringUtils.isEmpty(giftsCriteria.getBrandId())) {
            lambda.like(Gifts::getBrandId, giftsCriteria.getBrandId());
        }
        if (!StringUtils.isEmpty(giftsCriteria.getGiftsName())) {
            lambda.like(Gifts::getGiftsName, giftsCriteria.getGiftsName());
        }
        if (!StringUtils.isEmpty(giftsCriteria.getProductId())) {
            lambda.eq(Gifts::getProductId, giftsCriteria.getProductId());
        }
        if (!StringUtils.isEmpty(giftsCriteria.getGiftsColor())) {
            lambda.eq(Gifts::getGiftsColor, giftsCriteria.getGiftsColor());
        }
        if (!StringUtils.isEmpty(giftsCriteria.getTypeId())) {
            lambda.eq(Gifts::getTypeId, giftsCriteria.getTypeId());
        }
        List<Gifts> gifts = giftsMapper.selectList(lambda);
        PageInfo<Gifts> pageInfo = new PageInfo<>(gifts);
        List<GiftsVo> giftsVos = giftsTransfer.setInfo(gifts);

        return new PageResult<GiftsVo>(pageInfo.getTotal(), giftsVos);
    }
}
